// src/main/java/org/csu/mybigpro/config/JacksonConfig.java
package org.csu.mybigpro.config; // 根据您的实际包名调整

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

/**
 * 配置 Jackson ObjectMapper，解决 Long 类型在前端精度丢失问题
 */
@Configuration
public class JacksonConfig {

    @Bean
    @Primary
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        SimpleModule simpleModule = new SimpleModule();
        // 将所有 Long 类型的数据（包括包装类型 Long 和基本类型 long）转换为 String 类型
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); // 针对基本类型 long
        objectMapper.registerModule(simpleModule);

        // 注册 Java 8 日期时间模块
        objectMapper.registerModule(new JavaTimeModule());
        // 如果需要，可以添加其他配置，例如日期格式化
        // objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        // objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd")); // 如果你想要一个特定的日期字符串格式

        System.out.println("Jackson ObjectMapper 已注册 JavaTimeModule!");
        return objectMapper;
    }


}